﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Jim.K3Cloud;

/// <summary>
/// 下推
/// </summary>
[Sdk("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Push", "下推")]
public class K3CloudPushRequest : ISdkRequest<K3CloudPushResponse> ,IK3CloudCustomRequest
{
    public string FormId { get; set; }
    /// <summary>
    /// 单据内码集合，字符串类型，格式："Id1,Id2,..."（使用内码时必录）
    /// </summary>
    public string Ids { get; set; }
    /// <summary>
    /// 单据编码集合，数组类型，格式：[No1,No2,...]（使用编码时必录）
    /// </summary>
    public string[] Numbers { get; set; }
    /// <summary>
    /// 分录内码集合，逗号分隔（分录下推时必录） 注（按分录下推时，单据内码和编码不需要填,否则按整单下推）
    /// </summary>
    public string EntryIds { get; set; }
    /// <summary>
    /// 转换规则内码，字符串类型（未启用默认转换规则时，则必录）
    /// </summary>
    public string RuleId { get; set; }
    /// <summary>
    /// 目标单据类型内码，字符串类型（非必录）
    /// </summary>
    public string TargetBillTypeId { get; set; }
    /// <summary>
    /// 目标组织内码，整型（非必录）
    /// </summary>
    public string TargetOrgId { get; set; }
    /// <summary>
    /// 目标单据FormId，字符串类型，（启用默认转换规则时，则必录）
    /// </summary>
    public string TargetFormId { get; set; }
    /// <summary>
    /// 是否启用默认转换规则，布尔类型，默认false（非必录）
    /// </summary>
    public bool IsEnableDefaultRule { get; set; }
    /// <summary>
    /// 保存失败时是否暂存，布尔类型，默认false（非必录）  注（暂存的单据是没有编码的）
    /// </summary>
    public bool IsDraftWhenSaveFail { get; set; }
    /// <summary>
    /// 自定义参数，字典类型，格式："{key1:value1,key2:value2,...}"（非必录）  注（传到转换插件的操作选项中，平台不会解析里面的值）
    /// </summary>
    public object CustomParams { get; set; }

    public object QueryParams()
    {
        return new
        {
            FormId = FormId,
            Data = new {
                Ids = Ids,
                Numbers = Numbers,
                EntryIds = EntryIds,
                RuleId = RuleId,
                TargetBillTypeId = TargetBillTypeId,
                IsEnableDefaultRule = IsEnableDefaultRule,
                IsDraftWhenSaveFail = IsDraftWhenSaveFail,
                CustomParams = CustomParams,
            }
        };
    }

    public void Validate()
    {
    }
}


public class K3CloudPushResponse : SdkResponse { }